package com.huike.review.mapper;

import com.huike.common.core.page.TableDataInfo;
import com.huike.review.pojo.Review;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * Mybatis复习的Mapper层
 *
 */
@Repository
public interface MybatisReviewMapper {
    /**======================================================新增======================================================**/
    /**
     * 新增接口1
     * Get请求
     * @param name
     * @param age
     * @param sex
     */
    @Insert("insert into mybatis_review " +
            "(name,age,sex) " +
            "values " +
            "(#{name},#{age},#{sex})")
    void saveData(@Param("name") String name,
                  @Param("age") Integer age,
                  @Param("sex") String sex);

    /**
     * 新增接口2
     * Post请求
     * @param review
     */
    @Insert("insert into mybatis_review " +
            "(name,age,sex) " +
            "values " +
            "(#{name},#{age},#{sex})")
    void saveData1(Review review);
    /**======================================================修改======================================================**/
    /**
     * 修改接口
     * @param review
     */
    @Update("update mybatis_review set " +
            "name = #{name}, " +
            "age = #{age}, " +
            "sex = #{sex} " +
            "where " +
            "id = #{id}")
    void update(Review review);
    /**======================================================删除======================================================**/
    /**
     * 删除接口
     * @param id
     */
    @Delete("delete from mybatis_review " +
            "where " +
            "id = #{id}")
    void remove(Long id);
    /**======================================================简单查询===================================================**/
    /**
     * 根据id查询接口
     * @param id
     * @return
     */
    @Select("select * from mybatis_review " +
            "where " +
            "id = #{id}")
    Review getById(Long id);

    /**
     * 分页查询
     * @param map
     * @return
     */
    @Select("select * from mybatis_review limit #{page}, #{size}")
    List<Review> getDataByPage(Map<String, Object> map);

    /**
     * 查询数据库总条数total
     * @return
     */
    @Select("select count(*) from mybatis_review")
    Integer getTotal();
}
